const {BasicCredentials} = require('@huaweicloud/huaweicloud-sdk-core');
const vod = require("@huaweicloud/huaweicloud-sdk-vod/v1/public-api");
class HuaweiCloud {
    static AK = 'HPUAVAKJQRLNAEDSYTRX'
    static SK = 'DlKeL50HPUe9wSrac8mQlbGEuTdpzPxCMni5Xwwt'
    static PROJECT_ID='08abd7ff16c44f0c8c121f346be1a4a1'
    static REGION='cn-north-4'
    static ENDPOINT='https://vod.cn-north-4.myhuaweicloud.com'

    static getVodClient() {
        const credentials = new BasicCredentials()
            .withAk(HuaweiCloud.AK)
            .withSk(HuaweiCloud.SK)
            .withProjectId(HuaweiCloud.PROJECT_ID)
        return vod.VodClient.newBuilder()
            .withCredential(credentials)
            .withEndpoint(HuaweiCloud.ENDPOINT)
            .build();
    }

    /**
     * 获取视频URL的异步方法
     * @param {string} assetId - 资产ID，用于标识特定的视频资源
     * @returns {Promise<Array<string>>} 返回一个包含视频URL的数组
     */
    static async getVideoUrl (assetId) {
        // 获取华为云VOD客户端实例
        const client = HuaweiCloud.getVodClient()
        // 创建查询媒体资产详情的请求对象
        const request = new vod.ShowAssetDetailRequest();
        // 设置请求参数中的资产ID
        request.assetId = assetId
        // 发送请求并获取结果
        const result = await client.showAssetDetail(request);
        // 获取转码信息中的输出列表，如果不存在则为undefined
        let outputs = result.transcode_info?.output
        // 如果输出列表不存在或为空，则返回包含空字符串的数组
        if(!outputs || outputs.length === 0)  return['']
        // 初始化URL列表数组
        let urlList = []
        // 遍历所有输出文件
        for(let output of outputs) {
            console.log('output: ', output);
            //output:  {
                // play_type: 'HLS',
                // group_name: 'system_template_group',
                // encrypted: 0,
                // meta_data: {
                //     play_type: 0,
                //     codec: 'H.264',
                //     audio_codec: 'HEAAC',
                //     audio_bit_rate: 0,
                //     duration: 0,
                //     duration_ms: 0,
                //     video_size: 0,
                //     width: 0,
                //     hight: 0,
                //     height: 0,
                //     bit_rate: 0,
                //     frame_rate: 0,
                //     audio_channels: 0,
                //     sample: 0
                // }
            // }
            // 从元数据中解构出比特率、时长和视频尺寸
            let {bit_rate, duration,video_size} = output.meta_data
            // 检查比特率、时长和视频尺寸是否都大于0，如果是则将URL添加到列表中
            bit_rate > 0 && duration > 0 && video_size > 0 && urlList.push(output.url)
        }
        // 返回有效的URL列表
        console.log('urlList: ', urlList);
        return urlList

        // console.log('result: ', result);
    }
}

module.exports=HuaweiCloud